<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;


class User extends Base
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request$request)
    {
        $term['user_name']='';
        $term=$request->param();
        if (!empty($term['user_name'])){

            $pageParam['query']['user_name'] = $term['user_name'];
            $data=\app\admin\model\User::with('role')->where('user_name','like','%'.$term['user_name'].'%')->paginate(10,false,$pageParam);
            $this->assign('data',$data);
            return $this->fetch('user/index');
        }else{

            $data=\app\admin\model\User::with('role')->paginate(10);
            $this->assign('data',$data);
            $this->fetch('user/index');
           return view('user/index');
        }


    }
    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create(Request$request)
    {
        if (\request()->isPost()){
                $info = $request->param();
                $rule=[
                'user_name'=>'require|unique:user',
                'user_password'=>'require',
                'user_img'=>'require',
                'role_id'=>'require',
                'user_status'=>'require',
                ];
                $msg=[
                    'user_name.require' => '用户名不能为空',
                    'user_name.unique' => '用户名已被注册',
                    'user_password.require' => '密码不能为空',
                    'role_id.require' => '请选择用户的角色',
                    'user_status.require' => '请选择用户的状态',
                    'user_img.require' => '请选择用户的头像',
                ];
            $validate = new \think\Validate($rule,$msg);
            if (!$validate->check($info)) {
                $error = $validate->getError();
                return ['msg'=>$error];
            }
            //密码加密（MD5(MD5())）
            $pass = md5(md5($info['user_password']));
            \app\admin\model\User::create([
                'user_name'=>$info['user_name'],
                'user_password'=>$pass,
                'role_id'=>$info['role_id'],
                'user_thumb_img'=>$info['user_thumb_img'],
                'user_img'=>$info['user_img'],
                'user_status'=>$info['user_status'],
                ]);

            return ['msg' => 200];

        }else{

           $role= \app\admin\model\Role::select();


            return view('user/create',['role'=>$role]);
        }
        //
    }




    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        if (\request()->isPost()){
            $info = $request->param();
            $rule=[
                'user_name'=>'require|unique:user',
                'role_id'=>'require',
                'user_status'=>'require',
            ];
            $msg=[
                'user_name.require' => '用户名不能为空',
                'user_name.unique' => '用户名已被注册',
                'role_id.require' => '请选择用户的角色',
                'user_status.require' => '请选择用户的状态',

            ];
            $validate = new \think\Validate($rule,$msg);
            if (!$validate->check($info)) {
                $error = $validate->getError();
                return ['msg'=>$error];
            }
            \app\admin\model\User::where(['id'=>$info['id']])->update([
                'user_name'=>$info['user_name'],
                'role_id'=>$info['role_id'],
                'user_thumb_img'=>$info['user_thumb_img'],
                'user_img'=>$info['user_img'],
                'user_status'=>$info['user_status'],
            ]);

            return ['msg' => 200];



        }else{

           $user=\app\admin\model\User::where(['id'=>$id])->find();

            if ($user['role_id'] == 1){
                $id = session('user_info.role_id');
                if ($id != 1){
                    $this->error('权限不足');
                }
            }
            $role= \app\admin\model\Role::select();

          return view('user/update',['role'=>$role,'user'=>$user]);
        }

        //
    }
    /**
     * 修改密码
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function password(Request$request,$id)
    {
        if (\request()->isPost()){

            $info  = $request->param();
            //找到改密码的人
            $user= \app\admin\model\User::where(['id'=>$info['id']])->find();
            $id = session('user_info.role_id');
            if ($id != 1){
                $rule=[
                    'oldpass'=>'require',
                    'user_password'=>'require',
                    'repass'=>'require',

                ];
                $msg=[
                    'oldpass.require' => '旧密码不能为空',
                    'user_password.require' => '密码不能为空',
                    'repass.require' => '请确认密码',

                ];
                $validate = new \think\Validate($rule,$msg);
                if (!$validate->check($info)) {
                    $error = $validate->getError();
                    return ['msg'=>$error];
                }

                //获取密码，加密原密码必对
                $y_pass = md5(md5($info['oldpass']));
                if ($user['user_password'] == $y_pass){
                    $pass = md5(md5($info['user_password']));
                    \app\admin\model\User::where(['id'=>$info['id']])->update(['user_password'=>$pass]);

                }else{
                    return ['msg'=>'旧密码不正确，请联系管理员'];
                }
            }else{
                $pass = md5(md5($info['user_password']));
                \app\admin\model\User::where(['id'=>$info['id']])->update(['user_password'=>$pass]);

            }


            return ['msg'=>200];


        }else {
            $user = \app\admin\model\User::where(['id' => $id])->find();
            $id = session('user_info.role_id');
            if ($id == 1){
                return view('user/g_password',['user'=>$user]);
            }else{
                if ($user['role_id'] == 1){
                    //管理员只能管理员修改
                    //查看操作人的角色ID
                    if ($id != 1){
                        $this->error('超级管理员只能超级管理员修改');
                    }

                }

                return view('user/password',['user'=>$user]);

            }


        }


    }


    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $user=\app\admin\model\User::find(['id'=>$id]);

        $role_id=session('user_info.role_id');
        if ($user['role_id'] == 1 && $role_id !=1){
            return ['msg'=>'超级管理员只可以超级管理员删除'];
        }
        \app\admin\model\User::destroy($id);

        return ['msg'=>200];


        //
    }
}
